#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>

typedef int SListDataType;

typedef struct SListNode
{
	SListDataType data;
	struct SListNode* next;
}SListNode;

//尾插头插尾删头删
void SListPushBack(SListNode** pplist, SListDataType x);
void SListPushFront(SListNode** pplist, SListDataType x);
void SListPopBack(SListNode** pplist);
void SListPopFront(SListNode** pplist);

//打印链表
void SListPrint(SListNode* plist);

//查找
SListNode* SListFind(SListNode* plist, SListDataType x);

//在pos之后插入
void SListInsertAfter(SListNode* pos, SListDataType x);

//在pos之前插入
void SListInsertBefore(SListNode** pplist, SListNode* pos, SListDataType x);

//在pos之后删除
void SListEraseAfter(SListNode* pos);

//删除当前位置
void SListEraseCur(SListNode** pplist,SListNode* pos);